linalg_tri Module



Interfaces

public interface solve_triangular_system

  • private module subroutine solve_tri_mtx(lside, upper, trans, nounit, alpha, a, b, err)

    Solves a triangular system of equations of the form or where is a triangular matrix (either upper or lower) for the unknown .

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: lside

    Set to true to solve ; else, set to false to solve .

    logical, intent(in) :: upper

    Set to true if is upper triangular; else, set to false if is lower triangular.

    logical, intent(in) :: trans

    Set to true if ; else, set to false if .

    logical, intent(in) :: nounit

    Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

    real(kind=real64), intent(in) :: alpha

    The scalar multiplier .

    real(kind=real64), intent(in), dimension(:,:) :: a

    If lside is true, the M-by-M triangular matrix ; else, is N-by-N if lside is false.

    real(kind=real64), intent(inout), dimension(:,:) :: b

    On input, the M-by-N matrix . On output, the M-by-N solution matrix .

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.

  • private subroutine solve_tri_mtx_cmplx(lside, upper, trans, nounit, alpha, a, b, err)

    Solves a triangular system of equations of the form or where is a triangular matrix (either upper or lower) for the unknown .

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: lside

    Set to true to solve ; else, set to false to solve .

    logical, intent(in) :: upper

    Set to true if is upper triangular; else, set to false if is lower triangular.

    logical, intent(in) :: trans

    Set to true if ; else, set to false if .

    logical, intent(in) :: nounit

    Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

    complex(kind=real64), intent(in) :: alpha

    The scalar multiplier .

    complex(kind=real64), intent(in), dimension(:,:) :: a

    If lside is true, the M-by-M triangular matrix ; else, is N-by-N if lside is false.

    complex(kind=real64), intent(inout), dimension(:,:) :: b

    On input, the M-by-N matrix . On output, the M-by-N solution matrix .

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.

  • private subroutine solve_tri_vec(upper, trans, nounit, a, x, err)

    Solves the triangular system where is a triangular matrix.

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: upper

    Set to true if is upper triangular; else, set to false if is lower triangular.

    logical, intent(in) :: trans

    Set to true if ; else, set to false if .

    logical, intent(in) :: nounit

    Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

    real(kind=real64), intent(in), dimension(:,:) :: a

    The N-by-N triangular matrix .

    real(kind=real64), intent(inout), dimension(:) :: x

    On input, the N-element vector . On output, the N-element solution vector .

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.

  • private subroutine solve_tri_vec_cmplx(upper, trans, nounit, a, x, err)

    Solves the triangular system where is a triangular matrix.

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: upper

    Set to true if is upper triangular; else, set to false if is lower triangular.

    logical, intent(in) :: trans

    Set to true if ; else, set to false if .

    logical, intent(in) :: nounit

    Set to true if is unit-triangular (ones on the diagonal); else, false if is not unit-triangular.

    complex(kind=real64), intent(in), dimension(:,:) :: a

    The N-by-N triangular matrix .

    complex(kind=real64), intent(inout), dimension(:) :: x

    On input, the N-element vector . On output, the N-element solution vector .

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.